#region Using References

using System;

#endregion

namespace Beaker.OpenCube.Game.Mobs
{
	public sealed class Ocelot
		: MobData, ICanBreed, ICanBeTamed
	{
		/// <summary>
		/// Gets or sets the type of skin of the tamed cat.
		/// </summary>
		/// <value>
		/// The type of skin of the tamed cat.
		/// </value>
		public int CatType { get; set; }

		private TimeSpan _inLoveDuration;

		/// <summary>
		/// Gets or sets the time until the mob loses its breeding hearts and stops searching for a mate.
		/// </summary>
		/// <value>
		/// The time until the mob loses its breeding hearts and stops searching for a mate.
		/// </value>
		public TimeSpan InLoveDuration
		{
			get { return _inLoveDuration; }
			set { SetValue( ref _inLoveDuration, value ); }
		}

		private TimeSpan _age;

		/// <summary>
		/// Gets or sets the age of the mob.
		/// </summary>
		/// <remarks>
		/// When negative, the mob is a baby. 
		/// When 0 or above, the mob is an adult. 
		/// When above 0, represents the number of ticks before this mob can breed again.
		/// </remarks>
		public TimeSpan Age
		{
			get { return _age; }
			set { SetValue( ref _age, value ); }
		}

		private string _ownerName;

		/// <summary>
		/// Gets or sets the name of the owner. Empty string if no owner.
		/// </summary>
		/// <value>
		/// The name of the owner. Empty string if no owner.
		/// </value>
		public string OwnerName
		{
			get { return _ownerName; }
			set { SetValue( ref _ownerName, value ); }
		}

		private bool _isSitting;

		/// <summary>
		/// Gets or sets a value indicating whether this mob is sitting.
		/// </summary>
		/// <value>
		/// <c>true</c> if this mob is sitting; otherwise, <c>false</c>.
		/// </value>
		public bool IsSitting
		{
			get { return _isSitting; }
			set { SetValue( ref _isSitting, value ); }
		}
	}
}